<?php
/**
 * 上下文存取
 * 注意：这里是广义的上下文，类似Session，代价较高，请勿滥用！
 */
declare(strict_types=1);

namespace Libraries;

/**
 * @method static mixed|null get(string $strId, string $strKey)
 * @method static array getMulti(array $arrIdKey)
 * @method static bool set(string $strId, string $strKey, $mixVal)
 * @method static bool setMulti(array $arrIdKeyData)
 * @method static bool del(string $strId, string $strKey)
 * @method static bool delMulti(array $arrIdKey)
 */
class Context
{
    /**
     * 获取调用的类名
     * @return string
     */
    private static function getCls(): string
    {
        return 'Libraries\\ContextDrivers\\ContextIn' . (Config::getEnv() === 'dev' ? 'File' : 'Redis');
    }

    /**
     * 静态方法调用
     *
     * @param string $strMethod
     * @param mixed $params
     * @return mixed
     */
    public static function __callStatic(string $strMethod, $params)
    {
        return call_user_func_array([self::getCls(), $strMethod], $params);
    }
}
